package top.ranzhang.controller.admin;


import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import top.ranzhang.bean.dto.AddChildDTO;
import top.ranzhang.bean.dto.ChildToUserDTO;
import top.ranzhang.bean.dto.PageChildDTO;
import top.ranzhang.bean.vo.ChildNameIdVO;
import top.ranzhang.bean.vo.CoashVO;
import top.ranzhang.bean.vo.PageChildVO;
import top.ranzhang.common.result.PageResult;
import top.ranzhang.common.result.Result;
import top.ranzhang.service.IChildService;

import java.util.List;

/**
 * 用户儿童管理
 */
@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/admin/childToUser")
public class ChildToUserController {

    private final IChildService childService;

    /**
     * 获取用户儿童列表
     * @return
     */
    @GetMapping("/list")
    public PageResult list(PageChildDTO pageChildDTO) {
        log.info("获取用户儿童列表:{}", pageChildDTO);
        return childService.PageList(pageChildDTO);
    }

    /**
     * 添加用户儿童
     * @return
     */
    @PostMapping("/save")
    public Result save(@Validated @RequestBody AddChildDTO addChildDTO) {
        childService.add(addChildDTO);
        return Result.success();
    }

    /**
     * 修改用户儿童
     * @param childToUserDTO
     * @return
     */
    @PutMapping("/update")
    public Result update(@Validated @RequestBody ChildToUserDTO childToUserDTO) {
        childService.ToUpdateById(childToUserDTO);
        return Result.success();
    }

    /**
     * 删除用户儿童
     * @param ids
     * @return
     */
    @DeleteMapping("/delete")
    public Result delete(@RequestParam List<Integer> ids) {
        childService.ToRemoveByIds(ids);
        return Result.success();
    }

    /**
     * 根据id获取用户儿童
     * @param id
     * @return
     */
    @GetMapping("/getById")
    public Result getById(Integer id) {
        log.info("根据id获取用户儿童:{}", id);
        ChildToUserDTO childToUserDTO = childService.ToGetById(id);
        return Result.success(childToUserDTO);
    }

    /**
     * 获取所有用户名
     * @return
     */
    @GetMapping("/getAllName")
    public Result getAllName() {
        log.info("获取所有用户名");
        List<ChildNameIdVO> list = childService.getAllName();
        return Result.success(list);
    }

    /**
     * 获取儿童生日范围
     * @return
     */
    @GetMapping("/getBirthdayRange")
    public PageResult getBirthdayRange(PageChildDTO pageChildDTO){
        log.info("获取儿童生日范围:{}", pageChildDTO);
        return childService.getBirthdayRange(pageChildDTO);
    }
}
